package com.xbongbong.saas.domain.entity;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @author zhouwq
 * @date 2019/10/23 14:02
 */
@Getter
@Setter
@ToString
public class FundAccountEntity implements Serializable{

    private static final long serialVersionUID = 1419094357842268926L;

    /**
     * 主键
     */
    private Long id;
    /**
     * 公司id
     */
    private String corpid;
    /**
     * 创建者id
     */
    private String creatorId;
    /**
     * 账户名称
     */
    private String name;
    /**
     * 账户类型
     * @see com.xbongbong.paas.enums.FundAccountTypeEnum
     */
    private Integer type;
    /**
     * 初始金额
     */
    private BigDecimal initialAmount;
    /**
     * 初始时间
     */
    private Long initialTime;
    /**
     * 账户余额
     */
    private BigDecimal amount;
    /**
     * 备注
     */
    private String memo;
    /**
     * 账户类型为银行账户时才显示且必填，开户银行名称
     */
    private String bankName;
    /**
     * 账户类型为银行账户时才显示且必填，开户银行账户
     */
    private String bankAccount;
    /**
     * 账户类型为支付宝账户时才显示且必填，支付宝账户
     */
    private String alipayAccount;
    /**
     * 账户类型为微信账户时才显示且必填，微信账户
     */
    private String wechartAccount;
    /**
     * 账户类型为其他账户时才显示且必填，开户账户
     */
    private String openingAccount;
    /**
     * 是否开启 1-开启  0-关闭
     */
    private Integer enable;
    /**
     * 创建时间时间戳
     */
    private Long addTime;
    /**
     * 更新时间时间戳
     */
    private Long updateTime;
    /**
     * 删除标记
     */
    private Integer del;
    /**
     * 是否为默认付款账户 1-已设置为默认值 为空或0时候表示非默认值
     */
    private Integer isPayDefault;
    /**
     * 是否为默认收款账户 1-已设置为默认值 为空或0时候表示非默认值
     */
    private Integer isPaymentDefault;
    /**
     * 是否为微信默认收款账户 1-已设置为默认值 为空或0时候表示非默认值
     */
    private Integer isWeChatPaymentDefault;
    /**
     * 是否为支付宝默认收款账户 1-已设置为默认值 为空或0时候表示非默认值
     */
    private Integer isAlipayPaymentDefault;
    /**
     * 是否为银联默认收款账户 1-已设置为默认值 为空或0时候表示非默认值
     */
    private Integer isUnionPayPaymentDefault;

    public FundAccountEntity(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    public FundAccountEntity() {
    }

    public FundAccountEntity(String corpid, String creatorId, String name, Integer type, BigDecimal initialAmount, Long initialTime, BigDecimal amount, Integer enable) {
        this.corpid = corpid;
        this.creatorId = creatorId;
        this.name = name;
        this.type = type;
        this.initialAmount = initialAmount;
        this.initialTime = initialTime;
        this.amount = amount;
        this.enable = enable;
    }
}
